package lin

import (
	"errors"
	"net"
	"os/exec"
	"regexp"
	"syscall"
)

type X系统 struct {
}

func (X系统) Q取mac地址列表() (返回列表 L列表, 返回_错误 error) {
	返回列表.Q清空()
	Interfaces, err := net.Interfaces()
	if err != nil {
		返回_错误 = err
		return
	}
	for _, v := range Interfaces {
		地址 := v.HardwareAddr.String()
		返回列表.T添加值(地址)
	}

	return
}

func (X系统) Q取CPU_ID() (返回_值 string, 返回_错误 error) {
	cmd := exec.Command("wmic", "cpu", "get", "ProcessorID")
	cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true} // 隐藏黑框
	out, err := cmd.CombinedOutput()
	if err != nil {
		返回_错误 = err
		return
	}
	str := string(out)
	reg := regexp.MustCompile(`\s+`)
	str = reg.ReplaceAllString(str, "")
	if len(str) < 11 {
		return "", errors.New("无法获取CPU ID")
	}
	return str[11:], nil

}
func (X系统) P判断端口是否空闲(端口号 int) bool {
	监听, err := net.Listen("tcp", 全_类型.D到文本(端口号))
	if err != nil {
		return false
	}
	err = 监听.Close()
	return err == nil
}

func (X系统) D打开网页(网址 string) error {
	var 谷歌 G谷歌窗口
	路径 := 谷歌.Q取谷歌浏览器地址()
	var cmd *exec.Cmd
	if 路径 != "" {
		cmd = exec.Command(路径, 网址)
	} else {
		cmd = exec.Command("cmd", "/c", "start "+网址)

	}
	return cmd.Start()
}

// 获取 192  172 10 开头的IP地址
func (X系统) H获取本机ip() string {
	// 获取本机所有网络接口
	interfaces, err := net.Interfaces()
	if err != nil {
		return ""
	}
	for _, iface := range interfaces {
		addrs, err := iface.Addrs()
		if err != nil {
			continue // Skip this interface
		}

		for _, addr := range addrs {
			switch v := addr.(type) {
			case *net.IPNet:
				// Only consider IPv4 addresses
				if v.IP.To4() == nil {
					break
				}
				地址 := v.IP.String()
				if 全_文本.P判断前缀(地址, "192") {
					return 地址
				}
			default:
				// Ignore other types of address
			}
		}
		for _, addr := range addrs {
			switch v := addr.(type) {
			case *net.IPNet:
				// Only consider IPv4 addresses
				if v.IP.To4() == nil {
					break
				}
				地址 := v.IP.String()
				if 全_文本.P判断前缀(地址, "172") || 全_文本.P判断前缀(地址, "10") {
					return 地址
				}
			default:
				// Ignore other types of address
			}
		}
	}

	return ""
}
